package utilities;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;

public class Utilidades {

	public static Utilidades _instancia= null;
	
	public static Utilidades getInstancia(){
		if(_instancia==null){
			_instancia= new Utilidades();
		}
		return _instancia;
	}
	
	
	public ArrayList<CarreraFacultad> dameCarreras(){
        ArrayList<CarreraFacultad> listapalabras=new ArrayList<CarreraFacultad>();
        Properties propiedades=getPropiedades("etc/carreras.properties");               

        //limpiamos los blancos y corchetes que se encuentran al leer las palabras
        StringTokenizer subCadsCampos=new StringTokenizer(propiedades.toString().replace(" ", "").replace("{", "").replace("}", "").replace(",",":").replace("=", ":"),":");
        while(subCadsCampos.hasMoreTokens()){
        	CarreraFacultad c= new CarreraFacultad(subCadsCampos.nextToken(),subCadsCampos.nextToken(),Integer.parseInt(subCadsCampos.nextToken()));
            listapalabras.add(c);
        }
        return listapalabras;
    }
	
	public ArrayList<DepartamentoFacultad> dameDepartamentos(){
        ArrayList<DepartamentoFacultad> listapalabras=new ArrayList<DepartamentoFacultad>();
        Properties propiedades=getPropiedades("etc/departamentos.properties");               

        //limpiamos los blancos y corchetes que se encuentran al leer las palabras
        StringTokenizer subCadsCampos=new StringTokenizer(propiedades.toString().replace(" ", "").replace("{", "").replace("}", "").replace(",",":").replace("=", ":"),":");
        while(subCadsCampos.hasMoreTokens()){
        	DepartamentoFacultad d= new DepartamentoFacultad(subCadsCampos.nextToken(),subCadsCampos.nextToken());
        	listapalabras.add(d);
        }
        return listapalabras;
    }
	
	
	public static Properties getPropiedades(String ficheroProperties){
	      Properties propiedades = new Properties();      
	      try {
	          FileInputStream fichero = new FileInputStream(ficheroProperties);          
	          propiedades.load(fichero);
	          fichero.close();
	      } catch (Exception e) {}   
	      return propiedades;
	    }
	
	
	public void nuevaEntradaBBDD(String texto){		
		FileWriter fichero = null;
        PrintWriter pw = null;
        try
        {
            fichero = new FileWriter("etc/matricula.sql",true);
            pw = new PrintWriter(fichero);

            pw.println(texto);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
           // Nuevamente aprovechamos el finally para 
           // asegurarnos que se cierra el fichero.
           if (null != fichero)
              fichero.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }

	}


}
